﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TeamCommunitySolution.Modules.Metrics.Requests;
using TeamCommunitySolution.Modules.Metrics.Responses;

namespace TeamCommunitySolution.Modules.Metrics
{
    /// <summary>
    /// Metrics Manager.
    /// </summary>
    public interface MetricsManager
    {
        /// <summary>
        /// Creates the group.
        /// </summary>
        /// <param name="createRequest">The create request.</param>
        /// <returns>Metric Group Response</returns>
        MetricGroupResponse CreateGroup(MetricGroupCreateRequest createRequest);

        /// <summary>
        /// Creates the definition.
        /// </summary>
        /// <param name="metricCreateDefinition">The metric create definition.</param>
        /// <returns>Metric Definition Response</returns>
        MetricDefinitionResponse CreateDefinition(MetricDefinitionCreateRequest metricCreateDefinition);

        /// <summary>
        /// Gets the metric group.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>Metric Group Response</returns>
        MetricGroupResponse GetMetricGroup(MetricGroupRequest request);

        /// <summary>
        /// Gets the metric definition.
        /// </summary>
        /// <param name="fetchRequest">The fetch request.</param>
        /// <returns>Metric Definition Response</returns>
        MetricDefinitionResponse GetMetricDefinition(MetricDefinitionRequest fetchRequest);
    }
}
